A system administrator or developer in a computer system environment may often be required to execute a large list of tasks or processes. The easiest way to schedule the list of tasks is to run them sequentially. This solution may not be optimal, however, because of underutilized execution resources and increased total time of execution of the tasks.
While running the tasks in parallel may be more efficient, it may also be more complicated due to dependencies that exist between tasks in the list. For example, some tasks may temporarily change the topology of the system in such a way that other tasks running in parallel would fail. Other tasks may depend upon the output or changes to data generated by previously executed tasks in the list.
An optimum approach may be to run as many tasks in the list in parallel as possible while taking into consideration these dependencies between tasks. However, analyzing dependencies between large numbers of tasks to produce an execution schedule may be complex. In addition, frequent changes to the environment may require the dependencies be changed frequently, and maintenance of the complex set of dependencies may be difficult and costly.
It is with respect to these considerations and others that the disclosure made herein is presented.